<?php
class reservations_model extends CI_Model
{
	function __construct()
	{
		parent::__construct();
	}

	function dati($id, $fb_uid, $amici_noti)
	{
		$q = $this->db->select('id_utente')->from('reservations')->where('id_evento', $id)->get();
		if (!$q->num_rows())
			return array('utente_partecipa' => false, 'uid_amici' => array(), 'altri_partecipanti' => 0);

		// Costruisce un array semplice, più facile da manipolare
		$uids = array();
		foreach ($q->result_array() as $r) {
			$uids[] = $r['id_utente'];
		}

		if (in_array($fb_uid, $uids)) {
			$uids = array_diff($uids, array($fb_uid));
			$utente_partecipa = true;
		} else $utente_partecipa = false;

		$uid_amici = array_values(array_intersect($uids, $amici_noti));
		$uid_altri = array_values(array_diff($uids, $amici_noti));

		return array('utente_partecipa' => $utente_partecipa, 'uid_amici' => $uid_amici, 'altri_partecipanti' => count($uid_altri));
	}

	function civado($id, $fb_uid, $chiede_partecipazione)
	{
		$q = $this->db->get_where('reservations', array('id_evento' => $id, 'id_utente' => $fb_uid));

		if ($chiede_partecipazione) {
			if ($q->num_rows())
				return "Errore: partecipazione già registrata";
		} else {
			if ($q->num_rows() == 0)
				return "Errore: non risulta partecipazione";
		}

		if ($q->num_rows() != 0) {
			$r = $q->row_array();
			assert(!$chiede_partecipazione);
			assert($r['prezzo'] == 0);
			assert($r['numero'] == 1);
			$q = $this->db->delete('reservations', array('id_evento' => $id, 'id_utente' => $fb_uid));
		} else {
			assert($chiede_partecipazione);
			$q = $this->db->insert('reservations', array('id_evento' => $id, 'id_utente' => $fb_uid));
		}
		return $q ? 'OK' : 'Errore, partecipazione non registrata';
	}
}
